var currentDocument = null;
var demoHtml = $(".demo").html();
var timerSave = 2e3;
// 页面高度重置
$(window).resize(function () {
    $("body").css("min-height", $(window).height() - 90);
    $(".demo").css("min-height", $(window).height() - 160)
});

$(document).ready(function () {
    $("body").css("min-height", $(window).height() - 90);
    $(".demo").css("min-height", $(window).height() - 160);
    // 右侧容器排序
    $(".demo, .demo .column").sortable({connectWith: ".column", opacity: .35, handle: ".drag"});
    // 左侧组件菜单“拖动”按钮事件绑定
    // 左侧布局设置拖动事件
    $(".sidebar-nav .lyrow").draggable({
        connectToSortable: ".demo", // 允许 draggable 放置在指定的 sortable 上
        helper: "clone", // 拖动时复制代码效果
        opacity: 0.7, // 拖动时透明度
        handle: ".drag", // 只允许.drag拖动
        start: function (e, t) {},
        drag: function (e, t) { // event, ui
            t.helper.width(400) // 拖动的 clone 组件宽度
        },
        stop: function (e, t) {
            $(".demo .column").sortable({
                opacity: .35,
                connectWith: ".column" // 列表中的项目需被连接的其他 sortable 元素的选择器，单向
            });
        }
    });
    // 左侧其他设置拖动事件
    $(".sidebar-nav .box").draggable({
        connectToSortable: ".column",
        helper: "clone",
        handle: ".drag",
        drag: function (e, t) {
            t.helper.width(400)
        },
        stop: function () {
            handleJsIds()
        }
    });

    // 点击左侧组件菜单名，关闭其他菜单并向下展开当前菜单内容
    $(".nav-header").click(function () {
        $(".sidebar-nav .boxes, .sidebar-nav .rows").hide();
        $(this).next().slideDown();
    });

    // 编辑按钮
    $("#edit").click(function () {
        $("body").removeClass("devpreview sourcepreview");
        $("body").addClass("edit");
        removeMenuClasses();
        $(this).addClass("active");
        return false
    });
    // 开发按钮
    $("#devpreview").click(function () {
        $("body").removeClass("edit sourcepreview");
        $("body").addClass("devpreview");
        removeMenuClasses();
        $(this).addClass("active");
        return false
    });
    // 预览按钮
    $("#sourcepreview").click(function () {
        $("body").removeClass("edit");
        $("body").addClass("devpreview sourcepreview");
        removeMenuClasses();
        $(this).addClass("active");
        return false
    });

    // 下载按钮
    $("[data-target=#downloadModal]").click(function (e) {
        e.preventDefault();
        downloadLayoutSrc()
    });
    // 清空按钮
    $("#clear").click(function (e) {
        e.preventDefault();
        clearDemo()
    });

    // TODO 方法未实现
    $("#download").click(function () {
        downloadLayout();
        return false
    });
    $("#downloadhtml").click(function () {
        downloadHtmlLayout();
        return false
    });




    // 清空右侧容器
    removeElm();
    // 布局设置加入键盘输入事件
    gridSystemGenerator();
    // 组件自带配置
    configurationElm();

    // 每2秒保存一次布局
    // setInterval(function () {
    //     handleSaveLayout()
    // }, timerSave);

});

/**
 * 组件上“移除”按钮点击事件，点击时移除当前组件
 */
function removeElm() {
    $(".demo").delegate(".remove", "click", function (e) {
        e.preventDefault();
        $(this).parent().remove();
        // 当右侧容器中没有“行”时，清空容器
        if (!$(".demo .lyrow").length > 0) {
            clearDemo()
        }
    })
}

/**
 * 清空右侧容器
 */
function clearDemo() {
    $(".demo").empty()
}

/**
 * 若布局被修改，则保存
 */
function handleSaveLayout() {
    var e = $(".demo").html();
    if (e != window.demoHtml) {
        saveLayout();
        window.demoHtml = e
    }
}

/**
 * 处理特殊组件事件
 */
function handleJsIds() {
    handleModalIds();
    handleAccordionIds();
    handleCarouselIds();
    handleTabsIds();
    handleArticleIds();
    handleToDoListIds();
    handleDailyControlIds();
    handleSearchBoxIds();
    handleTrainMaterialIds();
    handleBannerBoxIds();
    handleCommonUseIds();
    handleAccountPaymentIds();
    // 提示消息l
   // handleMesRemain();

}

function handleModalIds() {
    var e = $(".demo #myModalLink");
    var t = randomNumber();
    var n = "modal-container-" + t;
    var r = "modal-" + t;
    e.attr("id", r);
    e.attr("href", "#" + n);
    e.next().attr("id", n)
}
// 手风琴组件
function handleAccordionIds() {
    var e = $(".demo #myAccordion");
    var t = randomNumber();
    var n = "panel-" + t;
    var r;
    // 创建随机ID
    e.attr("id", n);
    e.find(".panel").each(function (e, t) {
        r = "panel-element-" + randomNumber();
        $(t).find(".panel-title").each(function (e, t) {
            $(t).attr("data-parent", "#" + n);
            $(t).attr("href", "#" + r)
        });
        $(t).find(".panel-collapse").each(function (e, t) {
            $(t).attr("id", r)
        })
    })
}
// 幻灯片组件
function handleCarouselIds() {
    var e = $(".demo #myCarousel");
    var t = randomNumber();
    var n = "carousel-" + t;
    e.attr("id", n);
    e.find(".carousel-indicators li").each(function (e, t) {
        $(t).attr("data-target", "#" + n)
    });
    e.find(".left").attr("href", "#" + n);
    e.find(".right").attr("href", "#" + n)
}
// 选项卡组件
function handleTabsIds() {
    var e = $(".demo #myTabs");
    var t = randomNumber();
    var n = "tabs-" + t;
    e.attr("id", n);
    e.find(".tab-pane").each(function (e, t) {

        var n = $(t).attr("id");
        var r = "panel-" + randomNumber();
        $(t).attr("id", r);
        $(t).parent().parent().find("a[href=#" + n + "]").attr("href", "#" + r);

    })
}
//通知公告组件
function handleArticleIds() {
    var e = $(".demo #article");
    var t = randomNumber();
    var n = "article-" + t;
    e.attr("id", n);

}

//待办事项组件toDoList

function handleToDoListIds() {
    var e = $(".demo #toDoList");
    var t = randomNumber();
    var n = "toDoList-" + t;
    e.attr("id", n);

}
//每日监控组件dailyControl
function handleDailyControlIds() {
    var e = $(".demo #dailyControl");
    var t = randomNumber();
    var n = "dailyControl-" + t;
    e.attr("id", n);

}

//搜索框组件searchBox
function handleSearchBoxIds() {
    var e = $(".demo #searchBox");
    var t = randomNumber();
    var n = "searchBox-" + t;
    e.attr("id", n);

}
//培训资料组件trainMaterial
function handleTrainMaterialIds() {
    var e = $(".demo #trainMaterial");
    var t = randomNumber();
    var n = "trainMaterial-" + t;
    e.attr("id", n);

}
//登录页组件bannerBox
function handleBannerBoxIds() {
    var e = $(".demo #bannerBox");
    var t = randomNumber();
    var n = "bannerBox-" + t;
    e.attr("id", n);

}
//常用操作组件commonUse
function handleCommonUseIds() {
    var e = $(".demo #commonOperation");
    var t = randomNumber();
    var n = "commonOperation-" + t;
    e.attr("id", n);

}

//支出进度情况组件accountPayment

function handleAccountPaymentIds() {
    var e = $(".demo #accountPayment");
    var t = randomNumber();
    var n = "accountPayment-" + t;
    e.attr("id", n);

}






// function handleMesRemain() {
//     var e = $(".demo #head-r");
//     var t = randomNumber();
//     var n = "head-r-" + t;
//     e.attr("id", n);
//     e.find("span").each(function (i, t) {
//         var n = $(t).attr("id");
//         var r = n + "-" + randomNumber();
//         $(t).attr("id", r);
//         $(t).parent().parent().find()
//     });
// }

/**
 * 创建随机数
 */
function randomNumber() {
    return randomFromInterval(1, 1e6)
}

function randomFromInterval(e, t) {
    return Math.floor(Math.random() * (t - e + 1) + e)
}

/**
 * 布局设置，可手动输入，但数字之和必须为12
 */
function gridSystemGenerator() {
    $(".lyrow .preview input").bind("keyup", function () {
        var e = 0;
        var t = "";
        var n = false;
        var r = $(this).val().split(" ", 12); // 只分割到可返回长度为12的数组即停止
        // 动态创建列
        $.each(r, function (r, i) {
            if (!n) {
                if (parseInt(i) <= 0) n = true;
                e = e + parseInt(i);
                t += '<div class="col-md-' + i + ' column"></div>'
            }
        });
        // 若输入的数字之和不等于12，则隐藏“拖动”按钮
        if (e == 12 && !n) {
            $(this).parent().next().children().html(t);
            $(this).parent().prev().show()
        } else {
            $(this).parent().prev().hide()
        }
    })
}

/**
 * 组件自带配置
 * @param e event
 * @param t jq dom
 */
function configurationElm(e, t) {

    //频道编辑
    $(".demo").delegate(".editPortlet", "click", function(e) {
        e.preventDefault();
        var _this = $(this).siblings('.view').first();
        //清空modal 所有input框的值
        $("#iframeEditModal").contents().find("input").val('');

        //频道名字赋初始值
        var title = _this.find('.portletTitle').text();

        //data-interface 设置默认值
        var data_interface =_this.children('.portlet').attr('data-interface');
        $("#iframeEditModal").contents().find("#interface").val(data_interface);


        //高度设置默认值
        var _height= _this.css('height');
        $("#iframeEditModal").contents().find("#portletHeight").val((parseInt(_height)-30)+'px');

        $("#iframeEditModal").contents().find("#portletTitle").val(title);

        $('#myModal').modal();

        var index=0;
         $("#saveEditPortlet").click(function(e){
             e.preventDefault();

             if(index >0){
                 return;
             }
             index++;
             //频道标题
             var portletTitle = $("#iframeEditModal").contents().find("#portletTitle").val();
             //高度
             var portletHeight = $("#iframeEditModal").contents().find("#portletHeight").val();
             //标题字体大小
             var fontSize = $("#iframeEditModal").contents().find("#font-size").val();
             //标题字体颜色
             var fontColor = $("#iframeEditModal").contents().find("#font-color").val();
             //是否显示标题
             var titleDisplay = $("#iframeEditModal").contents().find("#title-display").val();
             //内容字体大小
             var conFontSize = $("#iframeEditModal").contents().find("#con-font-size").val();
             //内容字体颜色
             var conFontColor = $("#iframeEditModal").contents().find("#con-font-color").val();
             //显示条数
             var pageLimit = $("#iframeEditModal").contents().find("#pageLimit").val();
             //接口地址
             var interface = $("#iframeEditModal").contents().find("#interface").val();

             //标题配置
             //当设置标题时赋值
             if(portletTitle!='' && portletTitle!=null){
                 _this.find('.portletTitle').text(portletTitle);
             }

             _this.find('.portletHeight').css("height",portletHeight);
             _this.find('.portletTitle').css({"color":fontColor,"font-size":fontSize});
             _this.find('.portletTitle ').next().find('a span').css({"color":fontColor,"font-size":fontSize});


             // _this.find('.portletTitle ').next('a span').css({"color":fontColor,"font-size":fontSize});

             //不显示标题
             if(titleDisplay=='1'){
                 _this.find('.portletTitle').text('');
             }

             //内容字体及颜色
             _this.find('.portletContent ul li a').css({"color":conFontColor,"font-size":conFontSize});
             _this.find('.portletContent').css({"color":conFontColor,"font-size":conFontSize});
             _this.find('.portletContent span').css({"color":conFontColor,"font-size":conFontSize});


             // //接口名称
             _this.children('.portlet').attr('data-interface',interface);
             //
             // //页面显示条数
             _this.children('.portlet').attr('data-limit',pageLimit);

             $('#myModal').modal('hide');

         })







    });

    // 按钮类配置
    $(".demo").delegate(".configuration > a", "click", function (e) {
        e.preventDefault();
        var t = $(this).parent().next().next().children();
        $(this).toggleClass("active");
        t.toggleClass($(this).attr("rel"))
    });
    // 下拉可选类配置
    $(".demo").delegate(".configuration .dropdown-menu a", "click", function (e) {
        e.preventDefault();
        var t = $(this).parent().parent();
        var n = t.parent().parent().next().next().children();
        t.find("li").removeClass("active");
        $(this).parent().addClass("active");
        var r = "";
        t.find("a").each(function () {
            r += $(this).attr("rel") + " "
        });
        t.parent().removeClass("open");
        n.removeClass(r);
        n.addClass($(this).attr("rel"))
    })
}

function removeMenuClasses() {
    $("#menu-layoutit li button").removeClass("active")
}

function changeStructure(e, t) {
    $("#download-layout ." + e).removeClass(e).addClass(t)
}

/**
 * 向父标签中添加子标签代码
 * @param e
 */
function cleanHtml(e) {
    $(e).parent().append($(e).children().html())
}

/**
 * 下载代码源码
 */
function downloadLayoutSrc() {
    var e = "";
    // 向下载区添加右侧容器全部代码
    $("#download-layout").children().html($(".demo").html());

    // 清空下载区全部内容
    var t = $("#download-layout").children();
    t.find(".preview, .configuration, .drag, .remove").remove();
    t.find(".lyrow").addClass("removeClean");
    t.find(".box-element").addClass("removeClean");
    t.find(".lyrow .lyrow .lyrow .lyrow .lyrow .removeClean").each(function () {
        cleanHtml(this)
    });
    t.find(".lyrow .lyrow .lyrow .lyrow .removeClean").each(function () {
        cleanHtml(this)
    });
    t.find(".lyrow .lyrow .lyrow .removeClean").each(function () {
        cleanHtml(this)
    });
    t.find(".lyrow .lyrow .removeClean").each(function () {
        cleanHtml(this)
    });
    t.find(".lyrow .removeClean").each(function () {
        cleanHtml(this)
    });
    t.find(".removeClean").each(function () {
        cleanHtml(this)
    });
    t.find(".removeClean").remove();

    // 移除下载区列表的移动属性
    $("#download-layout .column").removeClass("ui-sortable");

    $("#download-layout .row-fluid").removeClass("clearfix").children().removeClass("column");
    if ($("#download-layout .container").length > 0) {
        changeStructure("row-fluid", "row")
    }
    // 格式化HTML代码
    formatSrc = $.htmlClean($("#download-layout").html(), {format: true, allowedAttributes: [["id"], ["class"], ["data-toggle"], ["data-target"], ["data-parent"], ["role"], ["data-dismiss"], ["aria-labelledby"], ["aria-hidden"], ["data-slide-to"], ["data-slide"], ["data-interface"],["data-url"], ["data-limit"], ["style"]]});
    // 向下载区重新添加净化后的HTML
    $("#download-layout").html(formatSrc);
    // 清空下载代码modal并添加净化后的HTML
    $("#downloadModal textarea").empty();
    $("#downloadModal textarea").val(formatSrc);
}


